package com.starrocks.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 同步配置主表实体
 * 对应一个 StarRocks 源表的同步配置
 */
@Data
@TableName("sync_config")
public class SyncConfigEntity {
    
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * StarRocks源表名
     */
    private String sourceTableName;
    
    /**
     * 主键字段名
     */
    private String primaryKey;
    
    /**
     * 更新时间字段名
     */
    private String updateTimeField;
    
    /**
     * 是否启用：0-禁用，1-启用
     */
    private Boolean enabled;
    
    /**
     * 批量大小
     */
    private Integer batchSize;
    
    /**
     * 启动时是否全量同步：0-否，1-是
     */
    private Boolean fullSyncOnStartup;
    
    /**
     * 源表软删除字段名（默认为 NULL）
     * 为空时使用 "is_delete"，用于查询时过滤软删除数据：1表示已删除，0或NULL表示未删除
     */
    private String deleteField;
    
    /**
     * 配置描述
     */
    private String description;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdTime;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedTime;
    
    /**
     * 目标表配置列表（一对多关系）
     * 不存储在数据库，通过关联查询获取
     */
    @TableField(exist = false)
    private List<SyncTargetEntity> targets;
}

